#pragma once
#include <stdint.h>

typedef enum {
    CAT_TOOL = 0,      // 实用小工具（工具）
    CAT_MEDIA,         // 多媒体功能（视频、音频）（媒体）
    CAT_ENTERTAINMENT, // 娱乐功能（娱乐）
    CAT_SETTING,       // 系统配置（设置）
    CAT_MAX            // 分类总数（用于循环边界）
} func_category_t;

typedef enum {
    /*******工具*********/
    FUNC_LOGIC_ANALYZER = 0, // 逻辑分析仪
    FUNC_WIRELESS_DEBUG,     // 无线调试
    FUNC_WIRED_DEBUG,        // 有线调试
    FUNC_USB_WIFI_SD,        // USB WIFI SD
    FUNC_PWM_OUTPUT,         // PWM输出
    FUNC_DAC_WAVEFORM,       // DAC波形
    FUNC_AMMETER,            // 电流表
    FUNC_OSCILLOSCOPE,       // 示波器
    FUNC_PD_OUTPUT,          //(PD输出)
    FUNC_STOPWATCH,          // 秒表
    FUNC_CALCULATOR,         // 计算器
    FUNC_IP_LOCATION,        //（IP 定位 / 天气）
    FUNC_OFFLINE_DOWNLOAD,   //（离线下载）
    FUNC_AC_CONTROL,         //（空调遥控 / RMT 控制）
    FUNC_USB_AUX_SCREEN,     //（USB 副屏）
    /*******媒体*********/

    FUNC_VIDEO_PLAYER,   // 视频播放
    FUNC_MUSIC_PLAYER,   // 音乐播放
    FUNC_IMAGE_PLAYER,   // 图片播放
    FUNC_VOICE_RECORDER, // 录音机
    FUNC_BLE_SPEAKER,    //Ble 音箱

    /*******娱乐功能*********/

    FUNC_MINIGAME, //（小游戏：2048、骰子等）
    FUNC_TXT_READER, //小说阅读器(文本阅读器) 
    FUNC_BILIBILI, //B站
    FUNC_AI_CHAT,  // AI对话
    /*******系统配置*********/

    FUNC_SYSTEM_SETTINGS, // 系统设置
    FUNC_WIFI_SETTINGS,   // WIFI设置
    FUNC_OTA_UPDATE,      // OTA更新

    FUNC_MAX // 功能总数（用于循环边界）
} func_list_t;
/********************分类下的功能数量**********/
#define TOOL_FUNC_COUNT          15
#define MEDIA_FUNC_COUNT         5
#define ENTERTAINMENT_FUNC_COUNT 4
#define SETTING_FUNC_COUNT       3

/********************功能界面内部资源索引*****************************/
/***************逻辑分析仪****************/
#define LOGIC_ANALYZER_NUM 0
/******************DAP-Link***************/
/******************settings***************/
#define SETTINGS_LANG_NUM          0
#define SETTINGS_BRIGHT_NUM        1
#define SETTINGS_SCREEN_COLOR_NUM  2
#define SETTINGS_VOICE_CONTROL_NUM 3 //语音控制
#define SETTINGS_SCREENSHOT_CONTROL_NUM 4 //截图控制
#define SETTINGS_FACTORY_RESET_NUM   5 //恢复出厂设置
#define SETTINGS_BRIGHT_TYPE_NUM     6//亮度模式
#define SETTINGS_CONFIRM_NUM         7 //确认
#define SETTINGS_CANCEL_NUM          8 //取消
#define SETTINGS_RESET_TITLE_NUM     9 //恢复出厂设置
#define SETTINGS_RESET_MSG_NUM       10 //确定要恢复出厂设置吗？
#define SETTINGS_AUTHOR_NUM         11 //确定要恢复出厂设置吗？
#define SETTINGS_AUTHOR_ENTR_NUM     12 //确定要恢复出厂设置吗？
#define SETTINGS_MAX_NUM           13 //设置项总数
/******************wifi settings***************/
#define WIFI_SETTINGS_SCAN_NUM   0   //wifi扫描
#define WIFI_SETTINGS_BLU_NUM   1      //蓝牙
#define WIFI_SETTINGS_MAX_NUM    2      //设置项总数
/******************game***************/
typedef enum {
    GAME_JUMP2JUMP = 0, //跳一跳
    GAME_2048,          //2048
    GAME_MATCH3,        //消消乐
    GAME_PVZ,           //植物大战僵尸
    GAME_CHESS,         //象棋
    GAME_CUT_MELON,     //切西瓜
    GAME_DICE,          //骰子
    GAME_FLAPPYBIRD,    //Flappy Bird
    GAME_MAX,
} game_type_t;
/**********提醒文本***********/
typedef enum {
    REMINDER_CONTINUE = 0, // 继续
    REMINDER_EXIT,         // 退出
    REMINDER_VOICN_TITLE,  // 语音提醒标题
    REMINDER_VOICN_TXT,    // 语音提醒内容

} reminder_type_t;
/******************wifi settings***************/
#define AC_DEVICE_TYPE_NUM 0 //空调类型
#define AC_TEMP_NUM          1 //温度
#define AC_POWER_NUM          2 //电源
#define AC_MODE_NUM           3 //模式
#define AC_FAN_NUM          4 //风速
#define AC_SEND_NUM          5 //发送
#define AC_MAX_NUM           6 //设置项总数
/******************有线调试***************/
#define WIRED_DEBUG_DAP_NUM 0 //DAP-Link
#define WIRED_DEBUG_ESP_NUM        1 //esp-uf2-jtag

/******************B站***************/
#define BILIBILI_LOGO_NUM 0 //bilibili logo
#define BILIBILI_NAME_NUM 1 //bilibili名称
/*
* @brief 获取分类下的功能数量
*/
uint8_t get_func_cat_count(func_category_t cat);
